package com.atos.homecare.common.file;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import com.atos.homecare.common.exceptions.HCFileException;

public class FileHelper {
	//Logger
	private static final Logger log = Logger.getLogger(FileHelper.class);
	
	/**
	 * Déplacement et renommage d'un fichier
	 * @param absoluteSource
	 * @param absoluteTarget
	 * @return
	 * @throws HCFileException
	 */
	public static boolean deplacerFichier(String absoluteSource, String absoluteTarget) throws HCFileException{	
		try{
			// File (or directory) to be moved
			File file = new File(absoluteSource);
	
			// Move file to new directory
			boolean success = file.renameTo(new File(absoluteTarget));
			if (!success) {
			    // File was not successfully moved
				log.error("Erreur deplacement fichier "+ absoluteSource + " -> " + absoluteTarget);
			}
			return success;
		}catch (RuntimeException e) {
			log.error("Erreur execution deplacement fichier "+ absoluteSource + " -> " + absoluteTarget, e);
			throw new HCFileException(e);
		}
	}
	
	/**
	 * Retourne la liste des fichiers d'un répertoire avec une exetension
	 * @param absoluteDir
	 * @param extension
	 * @return
	 * @throws HCFileException 
	 */
	public static List<String> listerFichierExt(String absoluteDir, String extension) throws HCFileException{		 
		try{
			List<String> listeFichiers = new ArrayList<String>();
			//parcours du repertoire
			String [] tabFics = new File(absoluteDir).list();
			if(tabFics != null){
				for (int i = 0; i < tabFics.length; i++){
					if(tabFics[i].endsWith(extension)){
						//ajout du fichier
						listeFichiers.add(tabFics[i]);
					}
				} 
			}
			
			return listeFichiers;
		}
		catch(RuntimeException e){
			log.error("Erreur lors de la recuperation des fichiers du repertoire " + absoluteDir + ". Extension " + extension, e);
			throw new HCFileException(e);
		}
		
	}	
}
